package com.huluobo.mvvm_base.mvvm.base.viewmodel;

import android.app.Application;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.ViewModel;

import com.huluobo.mvvm_base.mvvm.base.model.BaseRepo;

/**
 * Created by LC on 2024/2/22.
 * 可以直接继承ViewModel,也可以继承AndroidViewModel,
 * Android的ViewModel多了一个必须从写的构造方法,其中需要传递一个Application(上下文)
 */
public abstract class BaseViewModel<Repo extends BaseRepo> extends AndroidViewModel {

    //上下文
    protected Application application;

    //数据仓库
    protected Repo repo;

    public BaseViewModel(@NonNull Application application) {
        super(application);
        this.application = application;
        repo = createRepo();
    }

    //每一个ViewModel都需要有一个对应的Repo,比如:LoginViewModel,需要有一个对应的LoginRepo,这个createRepo的方法,
    // 就是绑定一个ViewModel和Repo
    protected abstract Repo createRepo();
}
